package capaModelo;

import java.io.Serializable;
import java.util.AbstractMap;
import java.util.HashMap;

import main.Aplication;
import capaGrafica.AdminAdd_V;
import capaGrafica.AdminDelete_V;
import capaGrafica.AdminEdit_V;
import capaGrafica.Login_V;
import capaPersistencia.ModuloProductos;
import data.ProductoVO;

public class AdminAdd_M implements Modelo {

	@Override
	public void pressed(int code, AbstractMap<String, Serializable> data) {

		switch (code) {

		/* Inserccion de producto */
		case AdminAdd_V.BTN_INSERT:

			ProductoVO p;
			ModuloProductos miModulo = new ModuloProductos();
			
			boolean ok = false;

			String id = (String) data.get("id");
			String nombre = (String) data.get("nombre");
			String tipo = (String) data.get("tipo");
			double precio = (Double) data.get("precio");
			int stock = (Integer) data.get("stock");
			String imagen = (String) data.get("imagen");
			String descripcion = (String) data.get("descripcion");

			/* Libro o pelicula */
			if (tipo.equals("libro") || tipo.equals("Pelicula")) {
				p = new ProductoVO(id, nombre, tipo, precio, stock, imagen,
						(String) data.get("genero"),
						(String) data.get("autor"), (Integer) data.get("agno"),
						descripcion);
				
				ok = miModulo.insertarProductoLibroPeli(p);
				
			}

			else if (tipo.equals("Coleccionable")) {
				p = new ProductoVO(id, nombre, tipo, precio, stock, imagen,
						(String) data.get("tamagno"), descripcion);
				
				ok = miModulo.insertarProductoColeccionables(p);
			}

			else if(tipo.equals("Ropa")){
				p = new ProductoVO(id, nombre, tipo, precio, stock, imagen,
						(String) data.get("talla"), (String) data.get("color"),
						descripcion);
				
				ok = miModulo.insertarProductoRopa(p);
			}
			
			/* Comprobamos si la inserccion ocurrio bien y notificamos */
			if(ok){
				HashMap<String,Serializable> datos = new HashMap<String,Serializable>();
				datos.put("insertMessage", "Inserccion realizada correctamente");
				Aplication.actualWindow.change(AdminAdd_V.INSERT_OK, datos);
//				PruebaProductos.actualWindow.change(Administracion_V.INSERT_OK, datos);

			}
			else{
				HashMap<String,Serializable> datos = new HashMap<String,Serializable>();
				datos.put("insertMessage", "Problemas al realizar la inserccion, revise los datos");
				Aplication.actualWindow.change(AdminAdd_V.INSERT_ERROR, datos);
			}
			
			break;
			
		case AdminAdd_V.BTN_LOGOUT:
			Aplication.logedUser= null;
			Aplication.changeToWindow(new Login_V(), null);
			break;
			
		case AdminAdd_V.MENU_EDIT:
			Aplication.changeToWindow(new AdminEdit_V(), null);
			break;
			
		case AdminAdd_V.MENU_ELIMINAR:
			Aplication.changeToWindow(new AdminDelete_V(), null);
			break;
		}


	}

}
